package com.quanxiaoha.weblog.admin.model.vo.aisettings;

import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Min;
import javax.validation.constraints.Max;

/**
 * @author: 犬小哈
 * @url: www.quanxiaoha.com
 * @date: 2025-01-10
 * @description: AI设置修改请求VO
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel(value = "AI设置修改请求VO")
public class UpdateAiSettingsReqVO {

    /**
     * AI功能是否启用
     */
    @NotNull(message = "请设置AI功能是否启用")
    private Boolean aiEnabled;

    /**
     * AI API地址
     */
    @NotBlank(message = "AI API地址不能为空")
    private String aiApiUrl;

    /**
     * AI API密钥
     */
    @NotBlank(message = "AI API密钥不能为空")
    private String aiApiKey;

    /**
     * AI模型名称
     */
    @NotBlank(message = "AI模型名称不能为空")
    private String aiModel;

    /**
     * AI请求超时时间（秒）
     */
    @NotNull(message = "AI请求超时时间不能为空")
    @Min(value = 5, message = "AI请求超时时间不能小于5秒")
    @Max(value = 300, message = "AI请求超时时间不能大于300秒")
    private Integer aiTimeout;

    /**
     * AI请求最大重试次数
     */
    @NotNull(message = "AI请求最大重试次数不能为空")
    @Min(value = 0, message = "AI请求最大重试次数不能小于0")
    @Max(value = 10, message = "AI请求最大重试次数不能大于10")
    private Integer aiMaxRetries;

    /**
     * AI流式输出是否启用
     */
    @NotNull(message = "请设置AI流式输出是否启用")
    private Boolean aiStreamEnabled;
}